#include <tinx/fs.h>
#include <tinx/syscall.h>

#define FS_OP_NR 16

static fs_op_t *fs_ops[FS_OP_NR];

fs_op_t *fs_get_op(int type)
{
    return fs_ops[type];
}

void fs_register_op(int type, fs_op_t *op)
{
    fs_ops[type] = op;
}

void fs_op_init()
{
    for (int i = 0; i < FS_OP_NR; i++)
    {
        fs_ops[i] = NULL;
    }
}

int fs_default_nosys()
{
    return EOF;
}

extern void ext2_init();
extern void super_init();
extern void inode_init();
extern void file_init();
extern void dev_init();

extern void pipe_init();
extern void minix_init();
extern void ext2_init();

extern void ext2_test();

void fs_init()
{
    fs_op_init();
    inode_init();
    file_init();
    minix_init();
    ext2_init();
    pipe_init();
    super_init();
    dev_init();
}